package com.atguigu.java;

/**
 * @author yihu
 * @email 1057202547@qq.com
 * @create 2020-11-2020-11-19-23:11
 * @des
 *
 *   多线程的创建，方式一：继承于Thread类
 *  * 1. 创建一个继承于Thread类的子类
 *  * 2. 重写Thread类的run() --> 将此线程执行的操作声明在run()中
 *  * 3. 创建Thread类的子类的对象
 *  * 4. 通过此对象调用start()
 *
 *  例子：遍历100以内的所有的偶数
 *
 *
 */

public  class  ThreadTest {
    public static void main(String[] args) {
        //3. 创建Thread类的子类的对象
        MyThread t1 = new MyThread();
        //4.通过此对象调用start():①启动当前线程 ② 调用当前线程的run()

        //问题一：我们不能通过直接调用run()的方式启动线程。
        //t1.run();
        t1.start();

        //问题二：再启动一个线程，遍历100以内的偶数，不可以还让已经start()的线程去执行,会报IllegalThreadStateException
        //t1.start();
        //需要重新创建一个线程去执行
        new MyThread().start();
        //如下的操作仍然在main 线程中执行的
        for (int i = 0; i < 100; i++) {
            if(i%2 == 0){
                System.out.println(i + "*********main************");
            }
        }
    }
}

//1:创建一个继承于Thread类的子类
class MyThread extends  Thread{
    //2. 重写Thread类的run()
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            if(i%2 == 0){
                System.out.println(Thread.currentThread().getName() +   i);
            }
        }
    }
}
